import router from "@/router";
import storage from "./storage";
import store from "@/store";
//判断本地是否有token，如果有，那么就放行

router.beforeEach((to, from, next) => {
    let token = storage.get('qf-token')
    //to 目标路由对象
    //from 源路由对象
    //next是个函数，调用之后，可以理解为放行
    // console.log(to);
    if (token) {
        //要判断是否有用户菜单
        if (!store.state.permission.userMenu.length) {
            // console.log(store.state.permission.userMenu);
            //发起请求，获取远程菜单
            store.dispatch('permission/FETCH_MENU_LIST')
                .then(() => {
                    //这里要注意，next里面要传参数既要进入页面的路由信息，因为next传参数后，当前要进入的路由会被废止，转而进入参数对应的路由，虽然是同一个路由，这么做主要是为了确保addRoute生效，并且不产生历史记录
                    next({ path: to.path, replace: true, query: to.query })
                })
        } else {
            next()
        }
    } else {
        //没有token
        //1.访问的是登录页
        if (to.path === '/login') {
            next()
        } else {
            //2.访问的不是登录页 强行调回登录页
            next({ path: '/login' })
        }

    }
    // next()
})
export default router